# 第一阶段：构建应用
FROM golang:alpine AS builder

WORKDIR /app

# 设置环境变量
ENV GO111MODULE=on
#ENV GOPROXY=https://goproxy.io
ENV GIN_MODE=release

# 拷贝 go.mod 和 go.sum 到工作目录
COPY go.mod go.sum ./

# 下载依赖
RUN go mod download

# 拷贝源代码到工作目录
COPY internal ./internal
COPY configs ./configs
COPY cmd ./cmd

# 构建应用
RUN cd cmd/api-server && go build -o gin_docker .

# 第二阶段：创建最小化运行时镜像
FROM alpine:latest

# 设置环境变量
ENV GIN_MODE=release

# 安装时区
RUN apk add --no-cache tzdata

WORKDIR /app

# 从构建阶段复制可执行文件和资源文件夹
COPY --from=builder /app/cmd/api-server/gin_docker .
COPY --from=builder /app/configs ./configs

# 暴露端口
EXPOSE 8082

# 设置入口点
ENTRYPOINT ["./gin_docker"]
